SlideShare a Scribd company logo
1 of 120
Download to read offline
Tuesday, November 23, 2010
Rubinius
What have you done for me today?
Tuesday, November 23, 2010
Rubinius?
Tuesday, November 23, 2010
Modern Ruby Implementation
Rubinius
Tuesday, November 23, 2010
Philosophy
Rubinius
Tuesday, November 23, 2010
Philosophy
Use Ruby
Rubinius
Tuesday, November 23, 2010
Philosophy
Allow Ruby to extend the system
Rubinius
Tuesday, November 23, 2010
module Enumerable
def map
if block_given?
ary = []
each { |o| ary << yield(o) }
ary
else
to_a
end
end
end
Tuesday, November 23, 2010
Compatibility
1.8.7
Rubinius
Tuesday, November 23, 2010
Compatibility
Rails 2.3 - 3+
Rubinius
Tuesday, November 23, 2010
Compatibility
C extensions
Rubinius
Tuesday, November 23, 2010
Spin Off Projects
Rubinius
Tuesday, November 23, 2010
Spin Off Projects
RubySpec
Rubinius
Tuesday, November 23, 2010
Spin Off Projects
FFI
Rubinius
Tuesday, November 23, 2010
Drop In Compatible
Rubinius
Tuesday, November 23, 2010
Technology
Rubinius
Tuesday, November 23, 2010
Technology
Bring techniques to Ruby
Rubinius
Tuesday, November 23, 2010
Tuesday, November 23, 2010
Optimized to
Machine Code
Tuesday, November 23, 2010
Bytecode VM
Optimized to
Machine Code
Tuesday, November 23, 2010
Bytecode VM
Soph"ticated Garba# Collection
Optimized to
Machine Code
Tuesday, November 23, 2010
Technology
Efficient Memory Layout
Rubinius
Tuesday, November 23, 2010
obj.ivars = {
:@name => “Evan”,
:@age => 31
}
Tuesday, November 23, 2010
obj.class.ivars = {
:@name => 0,
:@age => 1
}
obj.ivars = [
“Evan”,
31
]
Tuesday, November 23, 2010
Flags
Class
Extra Ivars
@name
@age
Tuesday, November 23, 2010
Developers!
Tuesday, November 23, 2010
Developers!
Developers!
Tuesday, November 23, 2010
Developers!
Developers!
Developers!
Tuesday, November 23, 2010
Build tools around APIs
API Driven
Tuesday, November 23, 2010
Allow users to build more!
API Driven
Tuesday, November 23, 2010
Example
Bytecode Compiler
API Driven
Tuesday, November 23, 2010
Example
Bytecode and Compiler
API Driven
Tuesday, November 23, 2010
Example
Fancy Language
API Driven
Tuesday, November 23, 2010
Why use
Rubinius?
Tuesday, November 23, 2010
Focus on Developers
Why?
Tuesday, November 23, 2010
I’m a Ruby developer
Why?
Tuesday, November 23, 2010
Tools born from need
Why?
Tuesday, November 23, 2010
Improve an Algorithm
Problem:
Tuesday, November 23, 2010
Step 1
Improving
Tuesday, November 23, 2010
Step 1
Benchmark
Improving
Tuesday, November 23, 2010
require 'benchmark'
cc = CoworkersCode.new
Benchmark.bm do |x|
x.report("initial") {
cc.calculate_awesome_score
}
end
Tuesday, November 23, 2010
user system total real
initial 0.071788 0.001601 0.073389 ( 29.998823)
Tuesday, November 23, 2010
29.998823
Tuesday, November 23, 2010
user system total real
initial 0.071788 0.001601 0.073389 ( 29.998823)
Tuesday, November 23, 2010
user: 0.071788
system: 0.001601
total: 0.073389
real: 29.998823
Tuesday, November 23, 2010
Time running code
User
Tuesday, November 23, 2010
Time inside the kernel
System
Tuesday, November 23, 2010
Sum of user and system
Total
Tuesday, November 23, 2010
Elapsed wall clock time
Real
Tuesday, November 23, 2010
Time measured by a stop watch
Wall Clock
Tuesday, November 23, 2010
user: 0.071788
system: 0.001601
total: 0.073389
real: 29.998823
Tuesday, November 23, 2010
0.073389
29.998823
!=
Tuesday, November 23, 2010
0.073389
29.998823
!=
??
Tuesday, November 23, 2010
Step 2
Profile
Improving
Tuesday, November 23, 2010
» rbx -Xprofile scratch/profile_sample.rb
% cumulative self self total
time seconds seconds calls ms/call ms/call name
------------------------------------------------------------
99.69 30.00 30.00 10 3000.10 3000.10 Rubinius::Channel#receive_timeout
0.13 0.04 0.04 2 19.82 19.82 IO.open_with_mode
0.11 0.03 0.03 1 33.05 33.05 IO::Buffer#fill
0.02 0.01 0.01 18 0.30 0.30 FFI::Platform::POSIX.stat
Tuesday, November 23, 2010
» rbx -Xprofile scratch/profile_sample.rb
% cumulative self self total
time seconds seconds calls ms/call ms/call name
------------------------------------------------------------
99.69 30.00 30.00 10 3000.10 3000.10 Rubinius::Channel#receive_timeout
0.13 0.04 0.04 2 19.82 19.82 IO.open_with_mode
0.11 0.03 0.03 1 33.05 33.05 IO::Buffer#fill
0.02 0.01 0.01 18 0.30 0.30 FFI::Platform::POSIX.stat
Tuesday, November 23, 2010
» rbx -Xprofile scratch/profile_sample.rb
% cumulative self self total
time seconds seconds calls ms/call ms/call name
------------------------------------------------------------
99.69 30.00 30.00 10 3000.10 3000.10 Rubinius::Channel#receive_timeout
0.13 0.04 0.04 2 19.82 19.82 IO.open_with_mode
0.11 0.03 0.03 1 33.05 33.05 IO::Buffer#fill
0.02 0.01 0.01 18 0.30 0.30 FFI::Platform::POSIX.stat
Tuesday, November 23, 2010
» rbx -Xprofile scratch/profile_sample.rb
% cumulative self self total
time seconds seconds calls ms/call ms/call name
------------------------------------------------------------
99.69 30.00 30.00 10 3000.10 3000.10 Rubinius::Channel#receive_timeout
0.13 0.04 0.04 2 19.82 19.82 IO.open_with_mode
0.11 0.03 0.03 1 33.05 33.05 IO::Buffer#fill
0.02 0.01 0.01 18 0.30 0.30 FFI::Platform::POSIX.stat
Tuesday, November 23, 2010
» rbx -Xprofile -Xprofiler.graph scratch/profile_sample.rb
Tuesday, November 23, 2010
» rbx -Xprofile -Xprofiler.graph scratch/profile_sample.rb
Tuesday, November 23, 2010
» rbx -Xprofile -Xprofiler.graph scratch/profile_sample.rb
0.00 30.00 10/60 Kernel#sleep [15]
[16] 99.9 30.00 0.00 10 Rubinius::Channel#receive_timeout [16]
Tuesday, November 23, 2010
» rbx -Xprofile -Xprofiler.graph scratch/profile_sample.rb
0.00 30.00 10/60 Kernel#sleep [15]
[16] 99.9 30.00 0.00 10 Rubinius::Channel#receive_timeout [16]
0.00 30.00 10/20 CoworkersCode#superhero_factor [14]
[15] 99.9 0.00 30.00 10 Kernel#sleep [15]
30.00 0.00 10/10 Rubinius::Channel#receive_timeout [16]
Tuesday, November 23, 2010
» rbx -Xprofile -Xprofiler.graph scratch/profile_sample.rb
0.00 30.00 10/60 Kernel#sleep [15]
[16] 99.9 30.00 0.00 10 Rubinius::Channel#receive_timeout [16]
0.00 30.00 10/20 CoworkersCode#superhero_factor [14]
[15] 99.9 0.00 30.00 10 Kernel#sleep [15]
30.00 0.00 10/10 Rubinius::Channel#receive_timeout [16]
Tuesday, November 23, 2010
» rbx -Xprofile -Xprofiler.graph scratch/profile_sample.rb
0.00 30.00 10/60 Kernel#sleep [15]
[16] 99.9 30.00 0.00 10 Rubinius::Channel#receive_timeout [16]
0.00 30.00 10/20 CoworkersCode#superhero_factor [14]
[15] 99.9 0.00 30.00 10 Kernel#sleep [15]
30.00 0.00 10/10 Rubinius::Channel#receive_timeout [16]
Tuesday, November 23, 2010
def superhero_factor
sleep 3
rand(10)
end
Tuesday, November 23, 2010
def superhero_factor
sleep 3
rand(10)
end
Tuesday, November 23, 2010
Step 3
Fix and benchmark
Improving
Tuesday, November 23, 2010
user system total real
initial 0.000102 0.000047 0.000149 ( 0.000139)
Tuesday, November 23, 2010
0.000139
Tuesday, November 23, 2010
0.000139
Tuesday, November 23, 2010
0.073389
29.998823
!=
Tuesday, November 23, 2010
Invisible in all but real time
Sleep!
Tuesday, November 23, 2010
Improve an Algorithm
Problem:
Tuesday, November 23, 2010
Improve an Algorithm
Problem:
SOLVED!
Tuesday, November 23, 2010
Slow / hung process
Problem:
Tuesday, November 23, 2010
» bin/rbx scratch/qa_sample.rb
1288125364.684678: Server started, pid 39331
Tuesday, November 23, 2010
Slow / hung process
Use Query Agent to inspect
Problem:
Tuesday, November 23, 2010
» bin/rbx -Xagent.start scratch/qa_sample.rb
1288125364.684678: Server started, pid 39331
Tuesday, November 23, 2010
» bin/rbx -Xagent.start scratch/qa_sample.rb
1288125364.684678: Server started, pid 39331
Tuesday, November 23, 2010
» bin/rbx console
VM: bin/rbx -Xagent.start scratch/qa_sample.rb
Connecting to VM on port 58273
Connected to localhost:58273, host type: x86_64-apple-darwin10.4.0
console>
Tuesday, November 23, 2010
» bin/rbx console
VM: bin/rbx -Xagent.start scratch/qa_sample.rb
Connecting to VM on port 58273
Connected to localhost:58273, host type: x86_64-apple-darwin10.4.0
console> pid
PID: 39331
Tuesday, November 23, 2010
» bin/rbx -Xagent.start scratch/qa_sample.rb
1288125364.684678: Server started, pid 39331
Tuesday, November 23, 2010
» bin/rbx console
VM: bin/rbx -Xagent.start scratch/qa_sample.rb
Connecting to VM on port 58273
Connected to localhost:58273, host type: x86_64-apple-darwin10.4.0
console> pid
PID: 39331
console> backtrace
Tuesday, November 23, 2010
» bin/rbx console
VM: bin/rbx -Xagent.start scratch/qa_sample.rb
Connecting to VM on port 58273
Connected to localhost:58273, host type: x86_64-apple-darwin10.4.0
console> pid
PID: 39331
console> backtrace
Thread 0:
0x7fff5fbfc250: IO::Buffer#fill_from in kernel/common/io.rb:67 (+72)
0x7fff5fbfc690: IO#read in kernel/common/io.rb:1197 (+125)
0x7fff5fbfcaf0: ImportantServer#get_request in /Users/evan/git/rbx-
release/scratch/qa_sample.rb:10 (+7)
0x7fff5fbfced0: MAIN.__script__ in /Users/evan/git/rbx-release/
scratch/qa_sample.rb:17 (+91)
0x7fff5fbfd390: Rubinius::CodeLoader#load_script in kernel/delta/
codeloader.rb:67 (+44)
0x7fff5fbfd790: Rubinius::CodeLoader.load_script in kernel/delta/
codeloader.rb:91 (+40)
0x7fff5fbfdbb0: Rubinius::Loader#script in kernel/loader.rb:467 (+125
0x7fff5fbfdfc0: Rubinius::Loader#main in kernel/loader.rb:578 (+64)
0x7fff5fbfe3e0: Rubinius::Loader.main in kernel/loader.rb:617 (+33)
0x7fff5fbfe800: Object#__script__ in kernel/loader.rb:628 (+60)
Tuesday, November 23, 2010
Thread 0:
0x7fff5fbfc250: IO::Buffer#fill_from in kernel/common/io.rb:67 (+72)
0x7fff5fbfc690: IO#read in kernel/common/io.rb:1197 (+125)
0x7fff5fbfcaf0: ImportantServer#get_request in /Users/evan/git/rbx-
release/scratch/qa_sample.rb:10 (+7)
0x7fff5fbfced0: MAIN.__script__ in /Users/evan/git/rbx-release/
scratch/qa_sample.rb:17 (+91)
0x7fff5fbfd390: Rubinius::CodeLoader#load_script in kernel/delta/
codeloader.rb:67 (+44)
0x7fff5fbfd790: Rubinius::CodeLoader.load_script in kernel/delta/
codeloader.rb:91 (+40)
0x7fff5fbfdbb0: Rubinius::Loader#script in kernel/loader.rb:467 (+125
0x7fff5fbfdfc0: Rubinius::Loader#main in kernel/loader.rb:578 (+64)
0x7fff5fbfe3e0: Rubinius::Loader.main in kernel/loader.rb:617 (+33)
0x7fff5fbfe800: Object#__script__ in kernel/loader.rb:628 (+60)
Tuesday, November 23, 2010
Thread 0:
0x7fff5fbfc250: IO::Buffer#fill_from in kernel/common/io.rb:67 (+72)
0x7fff5fbfc690: IO#read in kernel/common/io.rb:1197 (+125)
0x7fff5fbfcaf0: ImportantServer#get_request in /Users/evan/git/rbx-
release/scratch/qa_sample.rb:10 (+7)
0x7fff5fbfced0: MAIN.__script__ in /Users/evan/git/rbx-release/
scratch/qa_sample.rb:17 (+91)
0x7fff5fbfd390: Rubinius::CodeLoader#load_script in kernel/delta/
codeloader.rb:67 (+44)
0x7fff5fbfd790: Rubinius::CodeLoader.load_script in kernel/delta/
codeloader.rb:91 (+40)
0x7fff5fbfdbb0: Rubinius::Loader#script in kernel/loader.rb:467 (+125
0x7fff5fbfdfc0: Rubinius::Loader#main in kernel/loader.rb:578 (+64)
0x7fff5fbfe3e0: Rubinius::Loader.main in kernel/loader.rb:617 (+33)
0x7fff5fbfe800: Object#__script__ in kernel/loader.rb:628 (+60)
Tuesday, November 23, 2010
Slow / hung process
Sample process via CLI
Problem:
Tuesday, November 23, 2010
» bin/rbx -Xagent.start -Xagent.verbose 
scratch/qa_sample.rb
[QA: Bound to port 58407]
1288125364.684678: Server started, pid 39331
Tuesday, November 23, 2010
» bin/rbx -Xagent.start -Xagent.verbose 
scratch/qa_sample.rb
[QA: Bound to port 58407]
1288125364.684678: Server started, pid 39331
Tuesday, November 23, 2010
» bin/rbx -Xagent.start -Xagent.verbose 
scratch/qa_sample.rb
[QA: Bound to port 58407]
1288125364.684678: Server started, pid 39331
Tuesday, November 23, 2010
» bin/rbx console -p 58431 --bt
Thread 0:
0x7fff5fbfc200: IO::Buffer#fill_from in kernel/common/io.rb:67 (+72)
0x7fff5fbfc640: IO#read in kernel/common/io.rb:1197 (+125)
0x7fff5fbfcaa0: ImportantServer#get_request in /Users/evan/git/rbx-
release/scratch/qa_sample.rb:10 (+7)
0x7fff5fbfce80: MAIN.__script__ in /Users/evan/git/rbx-release/
scratch/qa_sample.rb:17 (+91)
0x7fff5fbfd340: Rubinius::CodeLoader#load_script in kernel/delta/
codeloader.rb:67 (+44)
0x7fff5fbfd740: Rubinius::CodeLoader.load_script in kernel/delta/
codeloader.rb:91 (+40)
0x7fff5fbfdb60: Rubinius::Loader#script in kernel/loader.rb:467 (+125)
0x7fff5fbfdf70: Rubinius::Loader#main in kernel/loader.rb:578 (+64)
0x7fff5fbfe390: Rubinius::Loader.main in kernel/loader.rb:617 (+33)
0x7fff5fbfe7b0: Object#__script__ in kernel/loader.rb:628 (+60)
Tuesday, November 23, 2010
Slow / hung process
Easy API to build monitoring tools
Problem:
Tuesday, November 23, 2010
require 'socket'
require 'rubinius/agent'
port = 58431
agent = Rubinius::Agent.connect(
"localhost", port)
kind, bt = agent.get("system.backtrace")
Tuesday, November 23, 2010
Socket basedVM API
Query Agent
Tuesday, November 23, 2010
Socket basedVM API
Simple get/set variables
Query Agent
Tuesday, November 23, 2010
Slow / hung process
Problem:
Tuesday, November 23, 2010
Slow / hung process
Problem:
SOLVED!
Tuesday, November 23, 2010
Memory Footprint
Problem:
Tuesday, November 23, 2010
Memory Footprint
Suspect some kind of memory leak
Problem:
Tuesday, November 23, 2010
Memory Footprint
Use Heap Dump!
Problem:
Tuesday, November 23, 2010
» bin/rbx -Xagent.start scratch/hd_demo.rb
Waiting...
Tuesday, November 23, 2010
» bin/rbx console
VM: bin/rbx -Xagent.start scratch/hd_demo.rb
Connecting to VM on port 58710
Connected to localhost:58710, host type:
x86_64-apple-darwin10.4.0
console> set system.memory.dump heap.dump
Tuesday, November 23, 2010
» bin/rbx -Xagent.start scratch/hd_demo.rb
Waiting...
Heap dumped to heap.dump
Tuesday, November 23, 2010
» rbx -Ilib histo.rb ../rbx-release/heap.dump
19798 Rubinius::Tuple 3487912
4867 Rubinius::MethodTable::Bucket 272552
4218 String 303696
4193 Rubinius::CompiledMethod 805056
4193 Rubinius::InstructionSequence 134176
4110 Rubinius::ByteArray 100199256
1547 Rubinius::LookupTable::Bucket 74256
1053 Rubinius::LookupTable 50544
1010 Rubinius::MethodTable 48480
1000 BigCrazyClass 32000
966 Class 104592
783 Rubinius::StaticScope 37584
704 Rubinius::AccessVariable 56320
Tuesday, November 23, 2010
» rbx -Ilib histo.rb ../rbx-release/heap.dump
19798 Rubinius::Tuple 3487912
4867 Rubinius::MethodTable::Bucket 272552
4218 String 303696
4193 Rubinius::CompiledMethod 805056
4193 Rubinius::InstructionSequence 134176
4110 Rubinius::ByteArray 100199256
1547 Rubinius::LookupTable::Bucket 74256
1053 Rubinius::LookupTable 50544
1010 Rubinius::MethodTable 48480
1000 BigCrazyClass 32000
966 Class 104592
783 Rubinius::StaticScope 37584
704 Rubinius::AccessVariable 56320
Tuesday, November 23, 2010
Complete Heap Layout
Heap Dump
Tuesday, November 23, 2010
Complete Heap Layout
Stable format
Heap Dump
Tuesday, November 23, 2010
Complete Heap Layout
Reference Ruby Reader
Heap Dump
Tuesday, November 23, 2010
Gauge
Heap Dump
Tuesday, November 23, 2010
Gauge
Rails Application Explorer
Heap Dump
Tuesday, November 23, 2010
Future Feature
Tracking allocation sites
Heap Dump
Tuesday, November 23, 2010
Memory Footprint
Problem:
Tuesday, November 23, 2010
Memory Footprint
Problem:
SOLVED!
Tuesday, November 23, 2010
Memory Footprint
Problem:
SOLVED!
(mostly)
Tuesday, November 23, 2010
Future
Tuesday, November 23, 2010
1.9
Future
Tuesday, November 23, 2010
Windows
Future
Tuesday, November 23, 2010
Full Concurrency
Future
Tuesday, November 23, 2010
Why Not?
Tuesday, November 23, 2010
Thanks!
Tuesday, November 23, 2010

More Related Content

What's hot

OSTU - Sake Blok on Packet Capturing with Tshark
OSTU - Sake Blok on Packet Capturing with TsharkOSTU - Sake Blok on Packet Capturing with Tshark
OSTU - Sake Blok on Packet Capturing with TsharkDenny K
 
Concurrency: Rubies, plural
Concurrency: Rubies, pluralConcurrency: Rubies, plural
Concurrency: Rubies, pluralehuard
 
Concurrency: Rubies, Plural
Concurrency: Rubies, PluralConcurrency: Rubies, Plural
Concurrency: Rubies, PluralEleanor McHugh
 
Couch to OpenStack: Nova - July, 30, 2013
Couch to OpenStack: Nova - July, 30, 2013Couch to OpenStack: Nova - July, 30, 2013
Couch to OpenStack: Nova - July, 30, 2013Trevor Roberts Jr.
 
Puppet Camp Tokyo 2014: Puppet Is Most of Your Documentation
Puppet Camp Tokyo 2014: Puppet Is Most of Your DocumentationPuppet Camp Tokyo 2014: Puppet Is Most of Your Documentation
Puppet Camp Tokyo 2014: Puppet Is Most of Your DocumentationPuppet
 
Multicloud connectivity using OpenNHRP
Multicloud connectivity using OpenNHRPMulticloud connectivity using OpenNHRP
Multicloud connectivity using OpenNHRPBob Melander
 
Alternative cryptocurrencies
Alternative cryptocurrencies Alternative cryptocurrencies
Alternative cryptocurrencies vpnmentor
 
Using cgroups in docker container
Using cgroups in docker containerUsing cgroups in docker container
Using cgroups in docker containerVinay Jindal
 
GPU-Accelerated Parallel Computing
GPU-Accelerated Parallel ComputingGPU-Accelerated Parallel Computing
GPU-Accelerated Parallel ComputingJun Young Park
 
Concurrency
ConcurrencyConcurrency
Concurrencyehuard
 
Introduction to NS2 - Cont..
Introduction to NS2 - Cont..Introduction to NS2 - Cont..
Introduction to NS2 - Cont..cscarcas
 

What's hot (19)

OSTU - Sake Blok on Packet Capturing with Tshark
OSTU - Sake Blok on Packet Capturing with TsharkOSTU - Sake Blok on Packet Capturing with Tshark
OSTU - Sake Blok on Packet Capturing with Tshark
 
Barcamp presentation
Barcamp presentationBarcamp presentation
Barcamp presentation
 
[BGOUG] Java GC - Friend or Foe
[BGOUG] Java GC - Friend or Foe[BGOUG] Java GC - Friend or Foe
[BGOUG] Java GC - Friend or Foe
 
Concurrency: Rubies, plural
Concurrency: Rubies, pluralConcurrency: Rubies, plural
Concurrency: Rubies, plural
 
Concurrency: Rubies, Plural
Concurrency: Rubies, PluralConcurrency: Rubies, Plural
Concurrency: Rubies, Plural
 
Couch to OpenStack: Nova - July, 30, 2013
Couch to OpenStack: Nova - July, 30, 2013Couch to OpenStack: Nova - July, 30, 2013
Couch to OpenStack: Nova - July, 30, 2013
 
Puppet Camp Tokyo 2014: Puppet Is Most of Your Documentation
Puppet Camp Tokyo 2014: Puppet Is Most of Your DocumentationPuppet Camp Tokyo 2014: Puppet Is Most of Your Documentation
Puppet Camp Tokyo 2014: Puppet Is Most of Your Documentation
 
Session 1 introduction to ns2
Session 1   introduction to ns2Session 1   introduction to ns2
Session 1 introduction to ns2
 
MySQL Sandbox 3
MySQL Sandbox 3MySQL Sandbox 3
MySQL Sandbox 3
 
Multicloud connectivity using OpenNHRP
Multicloud connectivity using OpenNHRPMulticloud connectivity using OpenNHRP
Multicloud connectivity using OpenNHRP
 
Ether mining 101 v2
Ether mining 101 v2Ether mining 101 v2
Ether mining 101 v2
 
Ether Mining 101
Ether Mining 101Ether Mining 101
Ether Mining 101
 
Alternative cryptocurrencies
Alternative cryptocurrencies Alternative cryptocurrencies
Alternative cryptocurrencies
 
doc
docdoc
doc
 
Using cgroups in docker container
Using cgroups in docker containerUsing cgroups in docker container
Using cgroups in docker container
 
Ping to Pong
Ping to PongPing to Pong
Ping to Pong
 
GPU-Accelerated Parallel Computing
GPU-Accelerated Parallel ComputingGPU-Accelerated Parallel Computing
GPU-Accelerated Parallel Computing
 
Concurrency
ConcurrencyConcurrency
Concurrency
 
Introduction to NS2 - Cont..
Introduction to NS2 - Cont..Introduction to NS2 - Cont..
Introduction to NS2 - Cont..
 

Similar to Modern Ruby Implementation Rubinius

Multi dimensional profiling
Multi dimensional profilingMulti dimensional profiling
Multi dimensional profilingbergel
 
Rubinius - What Have You Done For Me Lately
Rubinius - What Have You Done For Me LatelyRubinius - What Have You Done For Me Lately
Rubinius - What Have You Done For Me Latelyevanphx
 
Advanced Performance Tuning in Ext GWT
Advanced Performance Tuning in Ext GWTAdvanced Performance Tuning in Ext GWT
Advanced Performance Tuning in Ext GWTSencha
 
ScaleCamp 2009 - Last.fm vs Xbox
ScaleCamp 2009 - Last.fm vs XboxScaleCamp 2009 - Last.fm vs Xbox
ScaleCamp 2009 - Last.fm vs Xboxdavidsingleton
 
Exploring the Possibilities of Sencha and WebRTC
Exploring the Possibilities of Sencha and WebRTCExploring the Possibilities of Sencha and WebRTC
Exploring the Possibilities of Sencha and WebRTCGrgur Grisogono
 
Continuous Delivery for the Web Platform
Continuous Delivery for the Web PlatformContinuous Delivery for the Web Platform
Continuous Delivery for the Web PlatformJarrod Overson
 
Continuous Delivery at Netflix
Continuous Delivery at NetflixContinuous Delivery at Netflix
Continuous Delivery at NetflixRob Spieldenner
 
Advanced Data Widgets and Server Integration
Advanced Data Widgets and Server IntegrationAdvanced Data Widgets and Server Integration
Advanced Data Widgets and Server IntegrationSencha
 
Compiling and Optimizing Your Own Browser with WebKit
Compiling and Optimizing Your Own Browser with WebKitCompiling and Optimizing Your Own Browser with WebKit
Compiling and Optimizing Your Own Browser with WebKitSencha
 
SDT__valores_recomendados_por_Marcio_673839 (1).pptx
SDT__valores_recomendados_por_Marcio_673839 (1).pptxSDT__valores_recomendados_por_Marcio_673839 (1).pptx
SDT__valores_recomendados_por_Marcio_673839 (1).pptxdiegojdonoso
 
Big Data and Beautiful Video: How ClickHouse enables Mux to Deliver Content a...
Big Data and Beautiful Video: How ClickHouse enables Mux to Deliver Content a...Big Data and Beautiful Video: How ClickHouse enables Mux to Deliver Content a...
Big Data and Beautiful Video: How ClickHouse enables Mux to Deliver Content a...Altinity Ltd
 
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupDoing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupTom Croucher
 
Symfony - modern technology in practice, Webexpo Prague
Symfony - modern technology in practice, Webexpo PragueSymfony - modern technology in practice, Webexpo Prague
Symfony - modern technology in practice, Webexpo PraguePavel Campr
 
Improved kernel based port-knocking in linux
Improved kernel based port-knocking in linuxImproved kernel based port-knocking in linux
Improved kernel based port-knocking in linuxdinomasch
 
Introducing Ext GWT 3
Introducing Ext GWT 3Introducing Ext GWT 3
Introducing Ext GWT 3Sencha
 
Best Practices in Ext GWT
Best Practices in Ext GWTBest Practices in Ext GWT
Best Practices in Ext GWTSencha
 

Similar to Modern Ruby Implementation Rubinius (20)

Multi dimensional profiling
Multi dimensional profilingMulti dimensional profiling
Multi dimensional profiling
 
Rubinius - What Have You Done For Me Lately
Rubinius - What Have You Done For Me LatelyRubinius - What Have You Done For Me Lately
Rubinius - What Have You Done For Me Lately
 
Practica unidad 3
Practica unidad 3Practica unidad 3
Practica unidad 3
 
Advanced Performance Tuning in Ext GWT
Advanced Performance Tuning in Ext GWTAdvanced Performance Tuning in Ext GWT
Advanced Performance Tuning in Ext GWT
 
ScaleCamp 2009 - Last.fm vs Xbox
ScaleCamp 2009 - Last.fm vs XboxScaleCamp 2009 - Last.fm vs Xbox
ScaleCamp 2009 - Last.fm vs Xbox
 
Exploring the Possibilities of Sencha and WebRTC
Exploring the Possibilities of Sencha and WebRTCExploring the Possibilities of Sencha and WebRTC
Exploring the Possibilities of Sencha and WebRTC
 
Continuous Delivery for the Web Platform
Continuous Delivery for the Web PlatformContinuous Delivery for the Web Platform
Continuous Delivery for the Web Platform
 
Continuous Delivery at Netflix
Continuous Delivery at NetflixContinuous Delivery at Netflix
Continuous Delivery at Netflix
 
Advanced Data Widgets and Server Integration
Advanced Data Widgets and Server IntegrationAdvanced Data Widgets and Server Integration
Advanced Data Widgets and Server Integration
 
Compiling and Optimizing Your Own Browser with WebKit
Compiling and Optimizing Your Own Browser with WebKitCompiling and Optimizing Your Own Browser with WebKit
Compiling and Optimizing Your Own Browser with WebKit
 
SDT__valores_recomendados_por_Marcio_673839 (1).pptx
SDT__valores_recomendados_por_Marcio_673839 (1).pptxSDT__valores_recomendados_por_Marcio_673839 (1).pptx
SDT__valores_recomendados_por_Marcio_673839 (1).pptx
 
Big Data and Beautiful Video: How ClickHouse enables Mux to Deliver Content a...
Big Data and Beautiful Video: How ClickHouse enables Mux to Deliver Content a...Big Data and Beautiful Video: How ClickHouse enables Mux to Deliver Content a...
Big Data and Beautiful Video: How ClickHouse enables Mux to Deliver Content a...
 
WebSockets
WebSocketsWebSockets
WebSockets
 
Sf perf
Sf perfSf perf
Sf perf
 
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupDoing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
 
Symfony - modern technology in practice, Webexpo Prague
Symfony - modern technology in practice, Webexpo PragueSymfony - modern technology in practice, Webexpo Prague
Symfony - modern technology in practice, Webexpo Prague
 
Improved kernel based port-knocking in linux
Improved kernel based port-knocking in linuxImproved kernel based port-knocking in linux
Improved kernel based port-knocking in linux
 
Node.js Introduction
Node.js IntroductionNode.js Introduction
Node.js Introduction
 
Introducing Ext GWT 3
Introducing Ext GWT 3Introducing Ext GWT 3
Introducing Ext GWT 3
 
Best Practices in Ext GWT
Best Practices in Ext GWTBest Practices in Ext GWT
Best Practices in Ext GWT
 

More from evanphx

Rubinius For You - GoRuCo
Rubinius For You - GoRuCoRubinius For You - GoRuCo
Rubinius For You - GoRuCoevanphx
 
Developing a Language
Developing a LanguageDeveloping a Language
Developing a Languageevanphx
 
Staking Your Claim In Open Source
Staking Your Claim In Open SourceStaking Your Claim In Open Source
Staking Your Claim In Open Sourceevanphx
 
Rubinius 1.0 and more!
Rubinius 1.0 and more!Rubinius 1.0 and more!
Rubinius 1.0 and more!evanphx
 
RubyConf 2009
RubyConf 2009RubyConf 2009
RubyConf 2009evanphx
 
Accelerating Ruby with LLVM
Accelerating Ruby with LLVMAccelerating Ruby with LLVM
Accelerating Ruby with LLVMevanphx
 
Ruby World
Ruby WorldRuby World
Ruby Worldevanphx
 
Rubinius Community - MWRC
Rubinius Community - MWRCRubinius Community - MWRC
Rubinius Community - MWRCevanphx
 
rubyconf 2007 - Rubinius 1.0
rubyconf 2007 - Rubinius 1.0rubyconf 2007 - Rubinius 1.0
rubyconf 2007 - Rubinius 1.0evanphx
 
Rubinius - Improving the Rails ecosystem
Rubinius - Improving the Rails ecosystemRubinius - Improving the Rails ecosystem
Rubinius - Improving the Rails ecosystemevanphx
 
Rubinius - A Tool of the Future
Rubinius - A Tool of the FutureRubinius - A Tool of the Future
Rubinius - A Tool of the Futureevanphx
 

More from evanphx (11)

Rubinius For You - GoRuCo
Rubinius For You - GoRuCoRubinius For You - GoRuCo
Rubinius For You - GoRuCo
 
Developing a Language
Developing a LanguageDeveloping a Language
Developing a Language
 
Staking Your Claim In Open Source
Staking Your Claim In Open SourceStaking Your Claim In Open Source
Staking Your Claim In Open Source
 
Rubinius 1.0 and more!
Rubinius 1.0 and more!Rubinius 1.0 and more!
Rubinius 1.0 and more!
 
RubyConf 2009
RubyConf 2009RubyConf 2009
RubyConf 2009
 
Accelerating Ruby with LLVM
Accelerating Ruby with LLVMAccelerating Ruby with LLVM
Accelerating Ruby with LLVM
 
Ruby World
Ruby WorldRuby World
Ruby World
 
Rubinius Community - MWRC
Rubinius Community - MWRCRubinius Community - MWRC
Rubinius Community - MWRC
 
rubyconf 2007 - Rubinius 1.0
rubyconf 2007 - Rubinius 1.0rubyconf 2007 - Rubinius 1.0
rubyconf 2007 - Rubinius 1.0
 
Rubinius - Improving the Rails ecosystem
Rubinius - Improving the Rails ecosystemRubinius - Improving the Rails ecosystem
Rubinius - Improving the Rails ecosystem
 
Rubinius - A Tool of the Future
Rubinius - A Tool of the FutureRubinius - A Tool of the Future
Rubinius - A Tool of the Future
 

Recently uploaded

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 

Recently uploaded (20)

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 

Modern Ruby Implementation Rubinius